{{ partial "head/meta.html" . }}
{{ partial "head/opengraph.html" . }}
{{ partial "head/twitter.html" . }}
{{ partial "head/googleplus.html" . }}
{{ partial "head/facebook.html" . }}
{{ partial "head/verify.html" . }}
{{ partialCached "head/style.html" . }}
<script type="text/javascript">
(function(){
  localDB = {
    set: function (key, value, ttl) {
      if (ttl === 0) return;
      const now = new Date();
      const expiryDay = ttl * 86400000;
      const item = {
        value: value,
        expiry: now.getTime() + expiryDay
      };
      localStorage.setItem(key, JSON.stringify(item));
    },
    get: function (key) {
      const itemStr = localStorage.getItem(key);
      if (!itemStr) {
        return undefined;
      }
  
      const item = JSON.parse(itemStr);
      const now = new Date();
  
      if (now.getTime() > item.expiry) {
        localStorage.removeItem(key);
        return undefined;
      }
      return item.value;
    }
  };

  theme = {
    active: function() {
      const localState = localDB.get('theme');
      if (localState == undefined) return;
      theme.toggle(localState);
      window.matchMedia("(prefers-color-scheme: dark)").addListener(function (evt) {
        theme.toggle(evt.matches ? 'dark' : 'light');
      });
    },

    toggle: function (theme) {
      document.documentElement.setAttribute('data-theme',  theme);
      localDB.set('theme', theme, 2);
      
      const iframe = document.querySelector('iframe.giscus-frame');
      if (iframe) {
        const config = { setConfig: { theme: theme } };
        iframe.contentWindow.postMessage({ giscus: config }, 'https://giscus.app');
      }
    }
  };

  theme.active();
})(window);
</script>
{{ partial "head/config.html" . }}
{{ partialCached "head/analytics.html" . }}

